home *** CD-ROM | disk | FTP | other *** search
/ Pascal Super Library / Pascal Super Library (CW International)(1997).bin / MATH / NRPAS13 / SOR.DEM < prev    next >
Text File  |  1991-04-29  |  1KB  |  49 lines

  1. PROGRAM d17r1(input,output);
  2. (* driver for routine SOR *)
  3. CONST
  4.    jmax=11;
  5.    pi=3.1415926;
  6. TYPE
  7.    double = real;
  8.    gljmax = ARRAY [1..jmax,1..jmax] OF double;
  9. VAR
  10.    i,j,midl : integer;
  11.    rjac : double;
  12.    a,b,c,d,e,f,u : gljmax;
  13.  
  14. (*$I SOR.PAS *)
  15.  
  16. BEGIN
  17.    FOR i := 1 to jmax DO BEGIN
  18.       FOR j := 1 to jmax DO BEGIN
  19.          a[i,j] := 1.0;
  20.          b[i,j] := 1.0;
  21.          c[i,j] := 1.0;
  22.          d[i,j] := 1.0;
  23.          e[i,j] := -4.0;
  24.          f[i,j] := 0.0;
  25.          u[i,j] := 0.0
  26.       END
  27.    END;
  28.    midl := (jmax DIV 2)+1;
  29.    f[midl,midl] := 2.0;
  30.    rjac := cos(pi/jmax);
  31.    sor(a,b,c,d,e,f,u,jmax,rjac);
  32.    writeln('SOR Solution:');
  33.    FOR i := 1 to jmax DO BEGIN
  34.       FOR j := 1 to jmax DO write(u[i,j]:7:2);
  35.       writeln
  36.    END;
  37.    writeln;
  38.    writeln('Test that solution satisfies difference eqns:');
  39.    FOR i := 2 to (jmax-1) DO BEGIN
  40.       FOR j := 2 to (jmax-1) DO BEGIN
  41.          f[i,j] := u[i+1,j]+u[i-1,j]+u[i,j+1]
  42.             +u[i,j-1]-4.0*u[i,j]
  43.       END;
  44.       write(' ':7);
  45.       FOR j := 2 to (jmax-1) DO write(f[i,j]:7:2);
  46.       writeln
  47.    END
  48. END.
  49.